<?php
/**
 * 代表的是  swoole里面 后续 所有  task异步 任务 都放这里来
 * Date: 2018年5月26日
 * Time: 04:30:36
 */
include_once( dirname(__FILE__).'/Predis.php' );
include_once( dirname(__FILE__).'/Sms.php' );
class Task {

    /**
     * 定义单例模式的变量
     * @var null
     */
    private static $_instance = null;

    public  function getInstance() {
        if(empty(self::$_instance)) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    /**
     * 异步发送 验证码
     * @param $data
     * @param $serv swoole server对象
     */
    public  function sendSms($data, $serv='') {

        $data['phone'] = 13048769700;
        $response = "";
        try {
            echo $data['phone']."--------".$data['code'];
            $sms = new Sms();
            $response = $sms::sendSms($data['phone'], $data['code']);
        }catch (\Exception $e) {
            // todo
            return false;
        }

        // 如果发送成功 把验证码记录到redis里面
        if($response->Code === "OK") {
            Predis::getInstance()->set(smsKey($data['phone']), $data['code'], redis_config('timeOut'));
        }else {
            return false;
        }
        return true;
    }

    /**
     * 通过task机制发送赛况实时数据给客户端
     * @param $data
     * @param $serv swoole server对象
     */
    public static function pushLive($data, $serv='') {
        $clients = Predis::getInstance()->sMembers(redis_config("live_game_key"));
        foreach($clients as $fd) {
            $serv->push($fd, json_encode($data));
        }
    }
}
